One of the most recent and popular developments in the area of real-time communication systems has been the evolution of Internet instant messaging systems. These systems enable a plurality of users to communicate with their “buddies” across a computer network by sending instant text messages back and forth in real time. Popular instant messaging systems such as MICROSOFT NETWORK INSTANT MESSENGER (MSN MESSENGER) and AMERICA ON LINE INSTANT MESSENGER (AOL MESSENGER) incorporate similar methods, wherein an individual user creates a personal “buddy list” of “buddies” to whom the user desires to send instant messages. “Buddies” are merely other users that are members of the computer network and therefore available for instant messaging communication. The “buddy list” displays buddy availability information from which a user determines if a particular buddy is available for instant messaging. If a buddy is available for instant messaging, the user is then able to communicate with their buddy via real time text messages.
Instant messaging systems typically require an individual user to download and install instant messenger client software which is used to establish a client-server session with a central instant messaging server. Each user registers a unique user name with the central instant messaging server, which name is used by the server to monitor the availability status of the user for the instant messaging system, as well as send instant messages to the user. Users also enter the unique user names of other users in order to create their buddy list, receive availability information about their buddies, and communicate with their buddies.
When a user connects to the network and runs the client software, the user logs into the central server system using the user's unique user name, thereby announcing the user's availability to other users for instant messaging. The central server then examines the user's buddy list and determines which of the user's buddies are also online and available for instant messaging. This information about buddy availability which is presented to the user is known as “presence information.” Typical presence information displayed to a user includes information such as whether a buddy is online and available for communication, whether a buddy is online but unavailable for communication, and whether a buddy is offline.
The central server system sends presence information about the user's buddies to the user client software, which displays this presence information to the user. The user examines this presence information to determine which buddies are available and unavailable for instant message communication. In addition, by connecting to the instant messaging server system, the server system is able to determine the user's availability status, such as online, online but unavailable, and offline. This presence information is displayed to those individuals that have designated the user as their buddy. These individuals are thus able to initiate instant messaging with the user, just as the user is able to initiate instant messaging with their buddies.
Although current instant messaging systems incorporate presence information that is displayed to individual users, these systems are limited in a number of ways. First, the user buddy list is pre-defined and static, meaning that a user must know the unique user name for those buddies they want to add to their buddy list. In addition, the user's buddy list will remain unchanged unless the user manually makes modifications to the list, and contact entities the user may designate as a buddy are limited to people, because other entities such as computer systems are not incorporated into or monitored by the client-server system.
Furthermore, there are numerous privacy issues regarding current instant messaging systems. Some instant messaging systems do not limit the extent that user status information is shared, such that anyone may designate another user as their buddy and monitor their availability without the individual's knowledge or approval. This is sometimes undesirable, and some instant messaging systems have attempted to deal with this problem by requiring user permission to be included on another user's buddy list. This solution is limited, however, because it imposes the additional front-end limitation on establishing initial communication with those buddies of which the user has prior knowledge. In other words, requiring user permission for inclusion on another user's buddy list may prevent the user from finding and communicating with buddies to whom the user has no objection, but who remain unknown due to the constraint of user permission.
The limited amount of presence information a user can handle is yet another limitation of current instant messaging systems. Server systems are unable to provide every user with the presence information for every other user simultaneously, and therefore current instant messaging systems rely on the static buddy entry process and buddy list method to limit the presence information presented to a user. This reliance on a user buddy list prevents the user from discovering and communicating with new buddies, but the system cannot present the user with information about every possible user and let the user select buddies, because the system and user cannot handle this amount of information. Thus, the absence of a dynamic filtering mechanism that enables a dynamic buddy list while preventing the need for contact information on every potential buddy limits current instant messaging systems.
The manual status mechanism used to determine presence information is yet another limitation of current instant messaging systems. Current instant messaging systems determine user presence information based on manual user actions, such as the user logging into the server system and the user changing his or her availability status directly through computer input. These manual processes are inherently unreliable, however, and often lead a user to believe another individual is available when they are not, and vice versa.
One common situation that exemplifies the manual status mechanism problem described above is a “messaging tag,” wherein users repeatedly attempt to contact each other by sending text messages, but never communicate directly in real-time. For instance, when a buddy becomes unavailable but fails to change his or her presence information from “online and available” to “online but unavailable,” a user may attempt to communicate in real-time with the buddy under the mistaken impression that the buddy is available. Instead of communicating with their buddy, however, the user instead sends a non-real time message that is unanswered. When the buddy returns and finds the message, the buddy may still believe the user is online and attempt to return a message to the user. The user is often unavailable at that point, however, and the buddy's message is also sent in non-real time and is never read by the user. This self-perpetuating process continues until the user and buddy finally communicate in real-time or give up.
This messaging tag problem is not limited to the communication medium of instant messaging systems, but is a problem in other communication media, such as telephone and e-mail communications, wherein presence information is either altogether unavailable, unreliable, or available in only a limited amount. Thus, not only is accurate presence information desirable in the medium of instant messaging, but it is also desirable in other media such as telephone and e-mail communication where users desire to know the status of their messages and presence information about a message recipient.